package com.wusiwei.controller;

import com.wusiwei.common.Result;
import com.wusiwei.entity.User;
import com.wusiwei.service.UserService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 用户控制器
 */
@RestController
@RequestMapping("/api/users")
@Tag(name = "用户管理", description = "用户登录、注册、信息管理等API接口")
@Slf4j
public class UserController {

    @Autowired
    private UserService userService;

//    /**
//     * 获取当前用户信息
//     *
//     * @param token 用户令牌，从请求头获取
//     * @return 用户信息
//     */
//    @Operation(summary = "获取当前用户信息", description = "获取当前登录用户的详细信息")
//    @GetMapping("/info")
//    public Result<Map<String, Object>> getUserInfo(@RequestHeader(value = "Authorization", required = false) String token) {
//        // 检查令牌有效性
//        if (token == null || token.isEmpty()) {
//            return Result.error("未登录或授权已过期");
//        }
//
//        // 从令牌中提取用户名（示例， 应该解析JWT）
//        String username = "";
//        if (token.startsWith("JWT_")) {
//            String[] parts = token.split("_");
//            if (parts.length >= 3) {
//                username = parts[2];
//            }
//        }
//
//        if (username.isEmpty()) {
//            return Result.error("无效的令牌");
//        }
//
//        // 查询用户信息
//        User user = userService.findByUsername(username);
//        if (user == null) {
//            return Result.error("用户不存在");
//        }
//
//        // 构建用户信息
//        Map<String, Object> userInfo = new HashMap<>();
//        userInfo.put("id", user.getId());
//        userInfo.put("username", user.getUsername());
//        userInfo.put("realName", user.getRealName());
//        userInfo.put("roles", Arrays.asList("ROLE_USER"));
//
//        return Result.success(userInfo);
//    }
//
//    /**
//     * 用户注销
//     *
//     * @param token 用户令牌，从请求头获取
//     * @return 注销结果
//     */
//    @Operation(summary = "用户注销", description = "当前用户注销登录")
//    @PostMapping("/logout")
//    public Result<Void> logout(@RequestHeader(value = "Authorization", required = false) String token) {
//        // 检查令牌有效性
//        if (token == null || token.isEmpty()) {
//            return Result.error("未登录或授权已过期");
//        }
//        return Result.success();
//    }
//
//    /**
//     * 修改密码
//     *
//     * @param token       用户令牌，从请求头获取
//     * @param oldPassword 旧密码
//     * @param newPassword 新密码
//     * @return 修改结果
//     */
//    @Operation(summary = "修改密码", description = "修改当前用户的登录密码")
//    @PostMapping("/changePassword")
//    public Result<Void> changePassword(
//            @RequestHeader(value = "Authorization", required = false) String token,
//            @Parameter(description = "旧密码", required = true) @RequestParam String oldPassword,
//            @Parameter(description = "新密码", required = true) @RequestParam String newPassword) {
//        // 检查令牌有效性
//        if (token == null || token.isEmpty()) {
//            return Result.error("未登录或授权已过期");
//        }
//
//        // 从令牌中提取用户名
//        String username = "";
//        if (token.startsWith("JWT_")) {
//            String[] parts = token.split("_");
//            if (parts.length >= 3) {
//                username = parts[2];
//            }
//        }
//
//        if (username.isEmpty()) {
//            return Result.error("无效的令牌");
//        }
//
//        // 查询用户信息
//        User user = userService.findByUsername(username);
//        if (user == null) {
//            return Result.error("用户不存在");
//        }
//
//        // 验证旧密码
//        if (!user.getPassword().equals(oldPassword)) {
//            return Result.error("旧密码不正确");
//        }
//
//        // 调用服务层方法更新密码
//        return userService.updatePassword(user.getId(), newPassword);
//    }

    /**
     * 用户注册
     *
     * @param user 用户信息
     * @return 注册结果
     */
    @Operation(summary = "用户注册", description = "注册新用户")
    @PostMapping("/register")
    public Result<User> register(@RequestBody User user) {
        try {
            User registeredUser = userService.register(user);
            return Result.success(registeredUser);
        } catch (Exception e) {
            return Result.error(e.getMessage());
        }
    }

//    /**
//     * 更新用户信息
//     *
//     * @param id   用户ID
//     * @param user 用户信息
//     * @return 更新后的用户信息
//     */
//    @Operation(summary = "更新用户信息", description = "根据ID更新用户信息")
//    @PutMapping("/{id}")
//    public Result<User> update(
//            @Parameter(description = "用户ID") @PathVariable Integer id,
//            @RequestBody User user) {
//        try {
//            user.setId(Long.valueOf(id));
//            User updatedUser = userService.update(user);
//            return Result.success(updatedUser);
//        } catch (Exception e) {
//            return Result.error(e.getMessage());
//        }
//    }

//    /**
//     * 删除用户
//     *
//     * @param id 用户ID
//     * @return 操作结果
//     */
//    @Operation(summary = "删除用户", description = "根据ID删除用户")
//    @DeleteMapping("/{id}")
//    public Result<Void> delete(@Parameter(description = "用户ID") @PathVariable Integer id) {
//        userService.delete(id);
//        return Result.success();
//    }

//    /**
//     * 根据ID获取用户
//     *
//     * @param id 用户ID
//     * @return 用户信息
//     */
//    @Operation(summary = "获取用户详情", description = "根据ID获取用户详细信息")
//    @GetMapping("/{id}")
//    public Result<User> getById(@Parameter(description = "用户ID") @PathVariable Integer id) {
//        try {
//            User user = userService.getById(id);
//            return Result.success(user);
//        } catch (Exception e) {
//            return Result.error(e.getMessage());
//        }
//    }

//    /**
//     * 获取所有用户
//     *
//     * @return 用户列表
//     */
//    @Operation(summary = "获取所有用户", description = "获取系统中所有用户列表")
//    @GetMapping("/list")
//    public Result<java.util.List<User>> list() {
//        try {
//            java.util.List<User> users = userService.list();
//            return Result.success(users);
//        } catch (Exception e) {
//            return Result.error(e.getMessage());
//        }
//    }
} 